來到真真正正的Ansible最後一回。今天我們就把所有東西完全自動化部署到伺服器上面吧!
昨天我們執行Ansible Playbook的時候,我們需要在過程中輸入密碼。如果我們要自動化整個過程,那麽我們就需要讓Jenkins在部署時懂得輸入密碼。而一貫的做法來說,我們都會把這個密碼儲存在Jenkins的Credentials中。所以我們現在就把相關的解密密碼加到Credentials中吧!
首先,當執行Ansible Playbook時,除了可以用--ask-vault-pass
以外,其實亦可以用檔案形式去傳入我們的密碼。因此我們先建立一個密碼檔案vault-password.txt
,然後在其中輸入我們的密碼並儲存。
然後如同過往幾章一般,加入一個新Credentials。然後使用Secret file
並上傳我們的vault-password.txt
,並在ID一欄輸入vault-auth-key
。
按下Create
新增Credential。
Jenkinsfile
之前我們已經成功加入了Ansible的Stage到Jenkinsfile
中。現在,我們只需要再為這個Stage進行部署時,加入存取密碼的步驟即可。
把本來的Ansible Stage更改為以下內容。
stage('Ansible Deployment') {
steps {
withCredentials([sshUserPrivateKey(credentialsId: 'ansible-auth-key', keyFileVariable: 'ansible_auth_key', usernameVariable: 'ansible_user')]) {
withCredentials([file(credentialsId: 'vault-auth-key', variable: 'vault_auth_key')]) {
sh "ansible-playbook -i \"${instancePublicIp}\", main.yml -u \"${ansible_user}\" --private-key \"${ansible_auth_key}\" --vault-password-file \"${vault_auth_key}\""
}
}
}
}
withCredentials([file(credentialsId: 'vault-auth-key', variable: 'vault_auth_key')]) {…}
: 這裡從Jenkins的Credentials中取得剛剛的vault-auth-key
--vault-password-file \"${vault_auth_key}\"
: 執行Ansible Playbook時,傳入密碼檔案然後,Commit、上傳、執行Pipeline。
完成!成功進行了部署!
試一下登陸到頁面,成功返回了404
!
再試一下輸入密碼的效果。哎喲,挺不錯哦!
終於,我們有了一套完整的工具去進行由開發到部署的所有自動化步驟。是次系列亦都終於迎來了尾聲。各位看官且慢別走!明天我們會再加碼介紹一些好用的工具,並總結一下我們這三十天鐵人賽得到的經驗,記得不要錯過哦。
這三十天,說長不長,說短不短。參賽之前從來没有想過,原來我也可以每天瘋狂輸出數百字以上。明天,終於是最後一天了,過了明天我就好好的休息一陣子了!